package br.gov.mi.corporativo.dominio.boundary.comum.municipio;

import java.util.List;

import javax.inject.Inject;
import javax.jws.WebService;

import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import br.gov.mi.corporativo.dominio.entidade.comum.Municipio;
import br.gov.mi.corporativo.dominio.repositorio.comum.MunicipioRepositorio;
import br.gov.mi.infraestrutura.crud.CrudServicoImpl;

@Component
@Transactional(readOnly=true)
@WebService(endpointInterface = "br.gov.mi.corporativo.dominio.boundary.comum.municipio.MunicipioEndPoint")
public class MunicipioServico extends CrudServicoImpl<Municipio, Long, MunicipioRepositorio>  implements MunicipioEndPoint{
	
    @Inject
    public void setRepository(MunicipioRepositorio repositorio) {
        super.setRepositorio(repositorio);
    }
    
    @Override
    public List<Municipio> recuperarTodos() {
    	return repositorio.findAll(new Sort(Direction.ASC, "nmMunicipio"));
    }

	@Override
	public Municipio recuperarPorIdMunicipio(Long idMunicipio) {
		return repositorio.findByIdMunicipio(idMunicipio);
	}

	@Override
	public List<Municipio> recuperarPorUf(Long uf) {
		return repositorio.findByUf(uf);
	}

	@Override
	public List<Municipio> recuperarPorNmMunicipio(String nmMunicipio) {
		return repositorio.findByNmMunicipio(nmMunicipio);
	}

	@Override
	public Municipio recuperarPorCdMunicipioIbge(Long cdMunicipioIbge) {
		return repositorio.findByCdMunicipioIbge(cdMunicipioIbge);
	}

	@Override
	public List<Municipio> recuperarPorCdMunicipioSiafi(Long cdMunicipioSiafi) {
		return repositorio.findByCdMunicipioSiafi(cdMunicipioSiafi);
	}

	@Override
	public List<Municipio> recuperarPorCdMesoRegiao(Long cdMesoRegiao) {
		return repositorio.findByCdMesoRegiao(cdMesoRegiao);
	}

	@Override
	public List<Municipio> recuperarPorCdMicroRegiao(Long cdMicroRegiao) {
		return repositorio.findByCdMicroRegiao(cdMicroRegiao);
	}

	
	
}
